﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entita;
using System.Configuration;
using System.Data.OleDb;

namespace DataProvider
{
    public class MissioneDataProvider
    {

        public List<Missione> GetAll()
        {
            List<Missione> missioni = null;

            OleDbCommand cmd;
            OleDbDataReader dr;
            OleDbConnection conn;

            using (conn = ConnStringProvider.COORDDB)
            {
                string query = "SELECT * " +
                                  "FROM Missioni";

                cmd = new OleDbCommand(query, conn);
                conn.Open();

                using (dr = cmd.ExecuteReader())
                {
                    if (dr.HasRows)
                        missioni = BuildObject(dr);
                }
            }

            return missioni;
        }

        private List<Missione> BuildObject(OleDbDataReader dr)
        {
            List<Missione> missioni = new List<Missione>();
             Missione m = null;
            Posizione p = null;
            while (dr.Read())
            {
                p= new Posizione();
                p.Latitudine = Convert.ToDecimal(dr["Latitudine"]);
                p.Longitudine = Convert.ToDecimal(dr["Longitudine"]);

                m = new Missione();
                m.Descrizione = Convert.ToString(dr["Descrizione"]);
                m.Id = Convert.ToInt32(dr["Id"]);
                m.Titolo = Convert.ToString(dr["Titolo"]);

                m.Obiettivo = p;

                missioni.Add(m);
            }

            return missioni;
        }


        public void TestInsert()
        { 
            OleDbCommand cmd;
            OleDbDataReader dr;
            OleDbConnection conn;

            using (conn = ConnStringProvider.COORDDB)
            {
                //decimal d1 = 10.362254m;
                //decimal d2 = 11.254558m;



                conn.Open();
                for (int i = 0; i < 100; i++)
                {
                    //d1 += Convert.ToDecimal(i) / 100.0m;
                    //d2 +=Convert.ToDecimal(i) / 100.0m;

                    string query = "INSERT INTO Missioni (Descrizione,Latitudine,Longitudine,Titolo) " +
                                    "VALUES ('Go and buy beer" + i + "',10.362254,11.254558,'Beer" + i + "')";

                    cmd = new OleDbCommand(query, conn);


                    cmd.ExecuteNonQuery();
                }
            }
        }
        
    }
}
